package net.dopan.pigframe.demo.mapper;

import net.dopan.pigframe.core.base.dao.BaseDao;
import net.dopan.pigframe.demo.model.entity.CommentLike;
import net.dopan.pigframe.demo.model.entity.UserActivity;
import net.dopan.pigframe.demo.model.entity.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * @author wufeihong 用户活动类Mapper
 */
public interface UserActivityMapper extends BaseDao<UserActivity> {

    List<Map<String,String>> getNoteDetail(@Param("noteId")String noteId,@Param("userId")String userId);
    List<Map<String,String>> getSomeLike();
    List<Map<String,String>> getSomeRecommend();
    Integer findMaxId();
    /** 获取热门活动 */
    List<UserActivityVo> findUserActivityVo(Map<String, String> map);
    /** 获取活动详情 */
    List<UserActivityVo> getActivityDetail(@Param("activityId") String activityId,@Param("userId") String userId);
    @Select("SELECT\n" +
            "\tCOUNT(user_id)\n" +
            "FROM\n" +
            "\tuser_activity_participant\n" +
            "WHERE\n" +
            "\tactivity_id = #{activityId}")
    Integer findEntryActivityNum(@Param("activityId") Integer activityId);

    @Select("select username from sys_user where user_id = #{userId}")
    String findUsernameByUserId(@Param("userId") Integer userId);

    /**
     * 获取照片墙
     */
    List<Map<String, String>> getPhotoWall(@Param("activityId") String activityId, @Param("userId") String userId);

    Integer addPhotoIntoWall(@Param("activityId") Integer activityId, @Param("photoUrl") String photoUrl, @Param("userId") String userId);

    UserActivity selectById(@Param("activityId") Integer activityId);

    /**
     * 添加活动评论
     */
    Integer addActivityComment(ActivityCommentVo activityCommentVo);

    /**
     * 添加笔记评论
     */
    Integer addNoteComment(@Param("noteId") String noteId, @Param("userId") String userId, @Param("commentMsg") String commentMsg);

    /**
     * 获取活动评论总数
     */
    Integer getCommentNum(@Param("activityId") String activityId);

    /**
     * 获取笔记评论总数
     */
    Integer getNoteCommentNum(@Param("noteId") String noteId);

    /**
     * 添加活动评论回复
     */
    Integer addCommentReply(CommentReplyBo commentReplyBo);

    /**
     * 添加笔记评论回复
     */
    Integer addNoteCommentReply(@Param("userId") String userId, @Param("commentId") String commentId, @Param("replyMsg") String replyMsg);

    CommentLike findCommentLike(@Param("commentId") String commentId, @Param("userId") String userId);

    /**
     * 评论点赞查询
     */
    List<Map<String, String>> findNoteCommentLike(@Param("commentId") String commentId, @Param("userId") String userId);

    Integer delCommentLik(@Param("commentLikeId") String commentLikeId);

    Integer delNoteCommentLik(@Param("likeId") String likeId);

    Integer addCommentLik(@Param("commentId") String commentId, @Param("userId") String userId);

    Integer addNoteCommentLik(@Param("commentId") String commentId, @Param("userId") String userId);


    Integer getCommentLikNum(@Param("commentId") String commentId);

    /**
     * 获取笔记评论点赞数
     */
    Integer getNoteCommentLikNum(@Param("commentId") String commentId);

    List<ActivityCommentAndReplyVo> getCommentAndReply(@Param("activityId") String activityId, @Param("userId") String userId);

    List<NoteCommentAndReplyVo> getNoteCommentAndReply(@Param("noteId") String noteId, @Param("userId") String userId);

    Integer updateCommentLikNum(@Param("commentId") String commentId, @Param("likeNum") String likeNum);

    /**
     * 更新笔记评论点赞数量
     */
    Integer updateNoteCommentLikeNum(@Param("commentId") String commentId, @Param("likeNum") String likeNum);

    Integer saveCommentLikNum(@Param("commentId") String commentId, @Param("likeNum") String likeNum);

    Integer selectCommentLikNum(@Param("commentId") String commentId);

    /**
     * 用户照片墙照片点赞查询
     */
    List<Map<String, String>> getPhotoWallLike(@Param("wallId") String wallId, @Param("userId") String userId);

    /**
     * 用户照片墙点赞
     */
    Integer addPhotoWallLike(@Param("wallId") String wallId, @Param("userId") String userId);

    /**
     * 照片墙照片点赞数
     */
    Integer getPhotoWallLikeNum(@Param("wallId") String wallId);

    /**
     * 删除照片墙点赞
     */
    Integer delPhotoWallLike(@Param("wallId") String wallId, @Param("userId") String userId);

    /**
     * 更新照片墙照片点赞数
     */
    Integer updatePhotoWallLikeNum(@Param("likeNum") Integer likeNum, @Param("wallId") String wallId);

    /**
     * 用户活动点赞查询
     */
    List<Map<String, String>> getUserActivityLikeMap(@Param("activityId") String activityId, @Param("userId") String userId);

    /**
     * 用户笔记点赞查询
     */
    List<Map<String, String>> getUserNoteLikeMap(@Param("noteId") String noteId, @Param("userId") String userId);

    /**
     * 用户收藏活动查询
     */
    List<Map<String, String>> getUserActivityCollectMap(@Param("activityId") String activityId, @Param("userId") String userId);

    /**
     * 用户收藏笔记查询
     */
    List<Map<String, String>> getUserNoteCollectMap(@Param("noteId") String noteId, @Param("userId") String userId);

    /**
     * 删除用户活动点赞
     */
    Integer delUserActivityLikeMap(@Param("activityId") String activityId, @Param("userId") String userId);

    /**
     * 删除用户笔记点赞
     */
    Integer delUserNoteLikeMap(@Param("noteId") String noteId, @Param("userId") String userId);

    /**
     * 删除用户活动收藏
     */
    Integer delUserActivityCollectMap(@Param("activityId") String activityId, @Param("userId") String userId);
    /**
     * 删除用户笔记收藏
     */
    Integer delUserNoteCollectMap(@Param("noteId") String noteId, @Param("userId") String userId);


    /**
     * 添加用户活动点赞
     */
    Integer addUserActivityLikeMap(@Param("activityId") String activityId, @Param("userId") String userId);

    /**
     * 添加用户笔记点赞
     */
    Integer addUserNoteLikeMap(@Param("noteId") String noteId, @Param("userId") String userId);

    /**
     * 添加用户活动收藏
     */
    Integer addUserActivityCollectMap(@Param("activityId") String activityId, @Param("userId") String userId);

    /**
     * 添加用户笔记收藏
     */
    Integer addUserNoteCollectMap(@Param("noteId") String noteId, @Param("userId") String userId);

    /**
     * 活动点赞数
     */
    Integer findUserActivityLikeNum(@Param("activityId") String activityId);

    /**
     * 评论点赞数
     */
    Integer findUserNoteLikeNum(@Param("noteId") String noteId);

    /**
     * 活动收藏数
     */
    Integer findUserActivityCollectNum(@Param("activityId") String activityId);

    /**
     * 评论收藏数
     */
    Integer findUserNoteCollectNum(@Param("noteId") String noteId);

    /**
     * 更新活动点赞数
     */
    Integer updateLikeNum(@Param("activityId") String activityId, @Param("likeNum") String likeNum);
    /**
     * 更新评论点赞数
     */
    Integer updateNoteLikeNum(@Param("noteId") String noteId, @Param("likeNum") String likeNum);

    /**
     * 更新活动收藏数
     */
    Integer updateCollectNum(@Param("activityId") String activityId, @Param("collectNum") String collectNum);

    /**
     * 更新评论收藏数
     */
    Integer updateNoteCollectNum(@Param("noteId") String noteId, @Param("collectNum") String collectNum);

    /**
     * 查询用户是否点赞
     */
    List<Map<String, String>> getUserActivityParticipant(@Param("activityId") Integer activityId, @Param("userId") Integer userId);

    /**
     * 查询用户身份验证
     */
    Integer getIdentityVerification(@Param("userId") String userId);

    /**
     * 更新用户验证信息
     */
    Integer updateIdentityVrification(@Param("userId") String userId);

    /**
     * 更新UserActivity
     */
    Integer updateUserActivity(UserActivity record);

    /**
     * 添加用户动态
     */
    Integer addUserEvent(UserEventVo userEventVo);

    /**
     * 新增笔记标签
     */
    Integer addUserNoteTag(PublishNoteTagVo publishNoteTagVo);

    List<Map<String, String>> getPublishNoteList(@Param("tagName") String tagName);

    Integer addUserNoteMentionUser(@Param("userId") String userId, @Param("noteId") String noteId, @Param("username") String username);

    String getUsername(@Param("userId") String userId);

    Integer findUserNoteMaxId();

    /**
     * 添加笔记用到的标签
     */
    Integer addUserNoteTags(@Param("noteId") String noteId, @Param("tagId") String tagId);

    /**
     * 发布笔记
     */
    Integer addUserNote(UserNoteVo userNoteVo);

    /**
     * 添加笔记图片
     */
    Integer addUserNotePhoto(@Param("noteId") String noteId, @Param("photoUrl") String photoUrl);

    /**
     * 更新活动表的评论数
     */
    Integer updateCommentNum(@Param("activityId") String activityId, @Param("commentNum") String commentNum);

    /**
     * 更新笔记表的评论数
     */
    Integer updateNoteCommentNum(@Param("noteId") String noteId, @Param("commentNum") String commentNum);
}
